package singleton

import (
	"fmt"
	"io"
	"os"
	"sync"
)

var (
	validateErrorFile   *os.File
	valiedateErrorMutex *sync.RWMutex
)

func WriteToValidateErrorFile(s string) {
	valiedateErrorMutex.Lock()
	_, err1 := io.WriteString(validateErrorFile, fmt.Sprintf("%s\n", s)) //写入文件(字符串)
	valiedateErrorMutex.Unlock()
	check(err1)
}

func InitValidateError() {
	filename := "e:/tmp2/validateError.txt"
	var err1 error

	valiedateErrorMutex = new(sync.RWMutex)

	if checkFileIsExist(filename) { //如果文件存在
		validateErrorFile, err1 = os.OpenFile(filename, os.O_APPEND, 0666) //打开文件
		fmt.Println("文件存在")
	} else {
		validateErrorFile, err1 = os.Create(filename) //创建文件
		fmt.Println("文件不存在")
	}
	check(err1)
}

func CloseValidateError() {
	validateErrorFile.Close()
}

func check(e error) {
	if e != nil {
		panic(e)
	}
}

/**
 * 判断文件是否存在  存在返回 true 不存在返回false
 */
func checkFileIsExist(filename string) bool {
	var exist = true
	if _, err := os.Stat(filename); os.IsNotExist(err) {
		exist = false
	}
	return exist
}
